package view.backing.eventoxusuario;

import chemtools_logica.Beans.BancoBean;
import chemtools_logica.Beans.EventoBean;
import chemtools_logica.Beans.EventoxinsumoBean;
import chemtools_logica.Beans.EventoxusuarioBean;
import chemtools_logica.Beans.GastoBean;
import chemtools_logica.Beans.InsumoBean;
import chemtools_logica.Beans.UsuarioBean;

import chemtools_logica.LN.IR.LN_SFDetalleformulaRemote;
import chemtools_logica.LN.IR.LN_SFEventoRemote;
import chemtools_logica.LN.IR.LN_SFEventoxusuarioRemote;

import chemtools_logica.LN.IR.LN_SFLaboratorioRemote;
import chemtools_logica.LN.IR.LN_SFOrdenproduccionRemote;
import chemtools_logica.LN.IR.LN_SFProductoRemote;
import chemtools_logica.LN.IR.LN_SFTipoproductoRemote;

import chemtools_logica.LN.IR.LN_SFUsuarioRemote;

import java.util.ArrayList;
import java.util.Date;
import java.util.Hashtable;

import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.context.FacesContext;

import javax.faces.event.ActionEvent;

import javax.faces.model.SelectItem;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import javax.servlet.http.HttpSession;

import oracle.adf.view.rich.component.rich.RichForm;

import oracle.adf.view.rich.component.rich.RichPopup;

import oracle.adf.view.rich.component.rich.data.RichTable;

import oracle.adf.view.rich.component.rich.input.RichSelectOneChoice;

import oracle.adf.view.rich.component.rich.layout.RichPanelFormLayout;
import oracle.adf.view.rich.component.rich.layout.RichPanelGridLayout;

import oracle.adf.view.rich.component.rich.nav.RichButton;

import org.apache.myfaces.trinidad.event.SelectionEvent;

import view.backing.Utils.Utils;

public class Frm_eventoxusuario {
    private bSessionScopeBeaneventoxusuario sessionScopeBeaneventoxusuario = new bSessionScopeBeaneventoxusuario();
    private LN_SFEventoxusuarioRemote lN_SFEventoxusuarioRemote;
    private LN_SFEventoRemote lN_SFEventoRemote;
    private LN_SFUsuarioRemote lN_SFUsuarioRemote;
    private RichForm form;
    private RichPopup popUpAddEvento;
    private RichTable tbEventos;
    private RichSelectOneChoice selectTipoEventoBuscar;
    private RichPanelGridLayout pf_Busqueda;
    private RichPopup popUpAddEventoxUsuario;
    private RichSelectOneChoice selectUusarios;
    private RichSelectOneChoice comboUsuarioBuscar;
    private RichSelectOneChoice comboEventoBuscar;
    private RichButton btnVerHistorial;
    private RichPopup pop_VerHistorial;
    private RichTable tbVerHistorial;

    public Frm_eventoxusuario() {
        super();
    }
    
    @PostConstruct
    public void methodInvokeOncedOnPageLoad() {
        try {
            final Context context = getInitialContext();
            lN_SFEventoxusuarioRemote = (LN_SFEventoxusuarioRemote) context.lookup("map-LN_SFEventoxusuario#chemtools_logica.LN.IR.LN_SFEventoxusuarioRemote"); 
            lN_SFEventoRemote = (LN_SFEventoRemote) context.lookup("map-LN_SFEvento#chemtools_logica.LN.IR.LN_SFEventoRemote"); 
            lN_SFUsuarioRemote = (LN_SFUsuarioRemote) context.lookup("map-LN_SFUsuario#chemtools_logica.LN.IR.LN_SFUsuarioRemote"); 
            
            
        }catch(Exception e){
        
            
        }
        
        HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        UsuarioBean usuario = (UsuarioBean) sesion.getAttribute("usuario");
        sessionScopeBeaneventoxusuario.setUsuarioSession(usuario);
        
        //Llenar BD
        sessionScopeBeaneventoxusuario.setListaUsuario(lN_SFUsuarioRemote.listaUsuarioxPersona());
        sessionScopeBeaneventoxusuario.setListaEvento(this.llenarEventos());
        //sessionScopeBeaneventoxusuario.setListaUsuarios(this.llenarUsuarios());
        sessionScopeBeaneventoxusuario.setListaUsuariosxBusqueda(llenarUsuariosxBusqueda());
        
        //sessionScopeBeaneventoxusuario.setListaEventoxusuario(lN_SFEventoxusuarioRemote.getAllEventosxusuario());
    }
    
    public void mostrarPopUpAgregarEvento(ActionEvent event){
        sessionScopeBeaneventoxusuario.setDescripcionNuevo(null);
        Utils.showPopUpMIDDLE(getPopUpAddEvento());
    }
    public void mostrarpopAgregarEventoxUsuario(ActionEvent event){
        sessionScopeBeaneventoxusuario.setListaUsuarios(this.llenarUsuarios());
        sessionScopeBeaneventoxusuario.setDescripcionNuevo("");
        sessionScopeBeaneventoxusuario.setEventoAgregar(0);
        sessionScopeBeaneventoxusuario.setUsuarioAgregar(0);
        sessionScopeBeaneventoxusuario.setCometarioAgregar("");
    
       Utils.showPopUpMIDDLE(getPopUpAddEventoxUsuario());
    }
    public void nuevoeventoxUsuario(ActionEvent event){
        
        EventoxusuarioBean bean = new EventoxusuarioBean();
        int idEvento=sessionScopeBeaneventoxusuario.getEventoAgregar();
        int idUsuario=sessionScopeBeaneventoxusuario.getUsuarioAgregar();
        String comentario=sessionScopeBeaneventoxusuario.getCometarioAgregar();
        
        System.out.println("id" + idEvento + "idusuario" + idUsuario + "comentario" + comentario);
        bean.setIdEvento(idEvento);
        bean.setIdUsuario(idUsuario);
        bean.setComentario(comentario);
        bean.setFecha(new Date());
        if(lN_SFEventoxusuarioRemote.existeEvento(bean).size()>0){
           Utils.showMessage("no puedes registrar un mismo evento en el dia", null, 2);
           return;
            }
        lN_SFEventoxusuarioRemote.addEventoxusuario(bean); 
        this.limpiaryRefrescar(null);
        Utils.showMessage("Se registro un nuevo EventoxUsuario correctamente", null, 2);
        getPopUpAddEventoxUsuario().hide();
    }
    
    public void nuevoEvento(ActionEvent event){
        EventoBean bean = new EventoBean();
        bean.setDescripcion(sessionScopeBeaneventoxusuario.getDescripcionNuevo());
        bean.setEstado(1);
        
        lN_SFEventoRemote.addEvento(bean);
        
        Utils.showMessage("El tipo de evento fue agregado correctamente", null, 2);
        getPopUpAddEvento().hide();
    }
    
    public void selectUsuario(SelectionEvent se){
        RichTable t = (RichTable)se.getSource();
        UsuarioBean beanUsuario = (UsuarioBean)t.getSelectedRowData();
        sessionScopeBeaneventoxusuario.setUsuarioSelecc(beanUsuario);
        
        
        getBtnVerHistorial().setDisabled(false);
        Utils.addTarget(getBtnVerHistorial());
    }
    public void mostrarHistorial(ActionEvent event){
        UsuarioBean beanUsuario=sessionScopeBeaneventoxusuario.getUsuarioSelecc();
        int nidUsuario=beanUsuario.getIdUsuario();
        System.out.println("controladora idUsuario: " + nidUsuario);
        List<EventoxusuarioBean> listaEvento = lN_SFEventoxusuarioRemote.getEventoxUsuarioByUsuario(nidUsuario);
        sessionScopeBeaneventoxusuario.setListaEventoxusuario(listaEvento);
       // getTbVerHistorial().setValue(sessionScopeBeaneventoxusuario.getListaEventoxusuario());
        Utils.showPopUpMIDDLE(getPop_VerHistorial());
        
    }

    public void buscarEvento(ActionEvent event){
        int idUsuario=sessionScopeBeaneventoxusuario.getUsuarioBuscar();
        int idEvento = sessionScopeBeaneventoxusuario.getEventoBuscar();
         UsuarioBean beanUsuario = new UsuarioBean();
             beanUsuario.setIdUsuario(idUsuario);
         EventoBean beanEvento = new EventoBean();
             beanEvento.setIdEvento(idEvento);
        sessionScopeBeaneventoxusuario.setListaUsuario(lN_SFUsuarioRemote.getBusquedaUsuarios(beanUsuario,beanEvento));
        getTbEventos().setValue(sessionScopeBeaneventoxusuario.getListaUsuario());
        Utils.addTarget(getTbEventos());
        Utils.clearRowSelection(getTbEventos());
       
    }
    public void limpiaryRefrescar(ActionEvent event){
        getComboEventoBuscar().setValue(0);
        getComboUsuarioBuscar().setValue(0);
        
        sessionScopeBeaneventoxusuario.setListaUsuario(lN_SFUsuarioRemote.listaUsuarioxPersona());
        getTbEventos().setValue(sessionScopeBeaneventoxusuario.getListaUsuario());
        
        getBtnVerHistorial().setDisabled(true);
        Utils.addTarget(getTbEventos());
        Utils.addTarget(getPf_Busqueda());
        Utils.addTarget(getBtnVerHistorial());
        Utils.clearRowSelection(getTbEventos());
                  
    }
    public void cerrarVer(ActionEvent actionEvent) {
        getBtnVerHistorial().setDisabled(true);
        Utils.addTarget(getBtnVerHistorial());
        getPop_VerHistorial().hide();
    }
    public ArrayList llenarEventos(){
        ArrayList eventos = new ArrayList();
        List<EventoBean> listaBean = lN_SFEventoRemote.getAlleventosActivos();
        for(EventoBean bean : listaBean){
            eventos.add(new SelectItem(bean.getIdEvento(),bean.getDescripcion()));
        }
        return eventos;
    }
    
    public ArrayList llenarUsuarios(){
        ArrayList usuarios= new ArrayList();
        List<UsuarioBean> listaBean = lN_SFUsuarioRemote.getAllusuariosActivos();
        
        for(UsuarioBean bean : listaBean){
            usuarios.add(new SelectItem(bean.getIdUsuario(),bean.getNombre_Usuario()));
        }
        return usuarios;
    }
    
    public ArrayList llenarUsuariosxBusqueda(){
        ArrayList usuarios= new ArrayList();
        List<UsuarioBean> listaBean = lN_SFUsuarioRemote.getAllusuariosActivos();
        
        for(UsuarioBean bean : listaBean){
            usuarios.add(new SelectItem(bean.getIdUsuario(),bean.getNombre_Usuario()));
        }
        return usuarios;
    }
    
    public void setSessionScopeBeaneventoxusuario(bSessionScopeBeaneventoxusuario sessionScopeBeaneventoxusuario) {
        this.sessionScopeBeaneventoxusuario = sessionScopeBeaneventoxusuario;
    }
    

    public bSessionScopeBeaneventoxusuario getSessionScopeBeaneventoxusuario() {
        return sessionScopeBeaneventoxusuario;
    }

    public void setForm(RichForm form) {
        this.form = form;
    }

    public RichForm getForm() {
        return form;
    }
    private static Context getInitialContext() throws NamingException {
        Hashtable env = new Hashtable();
        // WebLogic Server 10.x/12.x connection details
        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101");
        return new InitialContext(env);
    }

    public void setPopUpAddEvento(RichPopup popUpAddEvento) {
        this.popUpAddEvento = popUpAddEvento;
    }

    public RichPopup getPopUpAddEvento() {
        return popUpAddEvento;
    }

    public void setTbEventos(RichTable tbEventos) {
        this.tbEventos = tbEventos;
    }

    public RichTable getTbEventos() {
        return tbEventos;
    }

    public void setSelectTipoEventoBuscar(RichSelectOneChoice selectTipoEventoBuscar) {
        this.selectTipoEventoBuscar = selectTipoEventoBuscar;
    }

    public RichSelectOneChoice getSelectTipoEventoBuscar() {
        return selectTipoEventoBuscar;
    }

    public void setPf_Busqueda(RichPanelGridLayout pf_Busqueda) {
        this.pf_Busqueda = pf_Busqueda;
    }

    public RichPanelGridLayout getPf_Busqueda() {
        return pf_Busqueda;
    }

    public void setPopUpAddEventoxUsuario(RichPopup popUpAddEventoxUsuario) {
        this.popUpAddEventoxUsuario = popUpAddEventoxUsuario;
    }

    public RichPopup getPopUpAddEventoxUsuario() {
        return popUpAddEventoxUsuario;
    }

    public void setSelectUusarios(RichSelectOneChoice selectUusarios) {
        this.selectUusarios = selectUusarios;
    }

    public RichSelectOneChoice getSelectUusarios() {
        return selectUusarios;
    }

    public void setComboUsuarioBuscar(RichSelectOneChoice comboUsuarioBuscar) {
        this.comboUsuarioBuscar = comboUsuarioBuscar;
    }

    public RichSelectOneChoice getComboUsuarioBuscar() {
        return comboUsuarioBuscar;
    }

    public void setComboEventoBuscar(RichSelectOneChoice comboEventoBuscar) {
        this.comboEventoBuscar = comboEventoBuscar;
    }

    public RichSelectOneChoice getComboEventoBuscar() {
        return comboEventoBuscar;
    }

    public void setBtnVerHistorial(RichButton btnVerHistorial) {
        this.btnVerHistorial = btnVerHistorial;
    }

    public RichButton getBtnVerHistorial() {
        return btnVerHistorial;
    }

    public void setPop_VerHistorial(RichPopup pop_VerHistorial) {
        this.pop_VerHistorial = pop_VerHistorial;
    }

    public RichPopup getPop_VerHistorial() {
        return pop_VerHistorial;
    }

    public void setTbVerHistorial(RichTable tbVerHistorial) {
        this.tbVerHistorial = tbVerHistorial;
    }

    public RichTable getTbVerHistorial() {
        return tbVerHistorial;
    }
}
